package com.example.activityproject201202;

import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class ListenerAct extends AppCompatActivity implements View.OnClickListener {//方式四： 实现OnClickListener接口，此时ListenerAct就拥有点击功能

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listener_activity_layout);
        Button inner_listener_bt = findViewById(R.id.inner_listener_bt);
        //方式一： 创建一个具有点击功能的对象-内部类
        MyInnerOnClickListener myInnerOnClickListener = new MyInnerOnClickListener();
        //注册监听
        inner_listener_bt.setOnClickListener(myInnerOnClickListener);

        Button outclass_listener_bt = findViewById(R.id.outclass_listener_bt);
        //方式二，创建一个具有点击功能的对象-外部类
        MyOutClsOnClickListener myOutClsOnClickListener = new MyOutClsOnClickListener();
        Context context = ListenerAct.this;
        myOutClsOnClickListener.setContext(context);
        outclass_listener_bt.setOnClickListener(myOutClsOnClickListener);

        //方式三： 匿名内部类
        Button listener_1_bt = findViewById(R.id.listener_1_bt);
        listener_1_bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 弹框提示,makeText方法的参数： 1. context上下文  2. text 先要显示的内容
                // 3. duration 持续时间--->可选：Toast.LENGTH_SHORT Toast.LENGTH_LONG
                Toast.makeText(context, "匿名内部类监听按钮被点击", Toast.LENGTH_SHORT).show();

            }
        });

        Button listener_2_bt = findViewById(R.id.listener_2_bt);
        //此时能传this，是因为该类已经实现了OnClickListener，
        listener_2_bt.setOnClickListener(this);
        //长按监听
        //listener_2_bt.setOnLongClickListener();

    }

    //方式四： 实现OnClickListener接口，此时ListenerAct就拥有点击功能
    @Override
    public void onClick(View v) {
        if (v.getId()==R.id.listener_2_bt){
            // 弹框提示,makeText方法的参数： 1. context上下文  2. text 先要显示的内容
            // 3. duration 持续时间--->可选：Toast.LENGTH_SHORT Toast.LENGTH_LONG
            Toast.makeText(ListenerAct.this, "本类监听按钮被点击", Toast.LENGTH_SHORT).show();
        }


    }

    //创建内部类去实现OnClickListener接口
    class MyInnerOnClickListener implements View.OnClickListener
    {
        @Override
        public void onClick(View v) { //点击功能的方法（函数）
            //事件处理
            Toast.makeText(ListenerAct.this, "内部类监听被触发了", Toast.LENGTH_SHORT).show();
        }
    }
}
